www.gusucode.com > VC++仿XP免费Prof UIS界面库-源码程序 > VC++仿XP免费Prof UIS界面库-源码程序/code/Samples/AviFrames/ChildFormView.cpp
//Download by http://www.NewXing.com // ChildFormView.cpp : implementation file // #include "stdafx.h" #include "AviFrames.h" #include "ChildFormView.h" #include "MainFrm.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #define GetMainFrame() (DYNAMIC_DOWNCAST(CMainFrame,AfxGetMainWnd())) ///////////////////////////////////////////////////////////////////////////// // CAviView IMPLEMENT_DYNAMIC(CAviView, CExtScrollWnd) CAviView::CAviView() { //{{AFX_DATA_INIT(CAviView) //}}AFX_DATA_INIT m_bInitComplete = false; } CAviView::~CAviView() { } BEGIN_MESSAGE_MAP(CAviView, CExtScrollWnd) //{{AFX_MSG_MAP(CAviView) ON_WM_CREATE() //}}AFX_MSG_MAP END_MESSAGE_MAP() ////////////////////////////////////////////////////////////////////////// void CAviView::PostNcDestroy() { CExtScrollWnd::PostNcDestroy(); delete this; } ///////////////////////////////////////////////////////////////////////////// // CAviView diagnostics #ifdef _DEBUG void CAviView::AssertValid() const { CExtScrollWnd::AssertValid(); } void CAviView::Dump(CDumpContext& dc) const { CExtScrollWnd::Dump(dc); } #endif //_DEBUG bool CAviView::Create( CWnd * pWndParent, UINT nDlgCtrlID, // = AFX_IDW_PANE_FIRST CRect rc, // = CRect( 0,0,0,0 ) DWORD dwStyle, // = WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|WS_HSCROLL|WS_VSCROLL DWORD dwStyleEx // = 0L ) { // dwStyleEx |= WS_EX_CLIENTEDGE; LPCTSTR strClass = ::AfxRegisterWndClass( CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS, ::LoadCursor(NULL, IDC_ARROW), NULL, NULL ); if( strClass == NULL ) { ASSERT( FALSE ); return false; } if( ! CreateEx( dwStyleEx, strClass, _T(""), dwStyle, rc.left, rc.top, rc.Width(), rc.Height(), pWndParent->GetSafeHwnd(), NULL, NULL ) ) { ASSERT( FALSE ); return false; } SetDlgCtrlID( nDlgCtrlID ); return true; } ////////////////////////////////////////////////////////////////////////// int CAviView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if( CExtScrollWnd::OnCreate(lpCreateStruct) == -1 ) return -1; m_bInitComplete = true; return 0; } ///////////////////////////////////////////////////////////////////////////// // CAviView message handlers ////////////////////////////////////////////////////////////////////////// CSize CAviView::OnSwGetTotalSize() const { if( GetMainFrame()->m_pAviPlayer != NULL ) return GetMainFrame()->m_pAviPlayer->GetAviRenderSize(); return CSize(0,0); } ////////////////////////////////////////////////////////////////////////// bool CAviView::OnSwDoScrollBy( CSize sizeScroll, bool bDoScroll // = true ) { CExtScrollWnd::OnSwDoScrollBy(sizeScroll,bDoScroll); if(!GetMainFrame()->m_pAviPlayer) return true; LONG lPosHorz = ScrollPos32Get( SB_HORZ ); LONG lPosVert = ScrollPos32Get( SB_VERT ); CSize szAvi = GetMainFrame()->m_pAviPlayer->GetAviRenderSize(); GetMainFrame()->m_pAviPlayer->SetPlayerWindowPos( -lPosHorz, -lPosVert, szAvi.cx, szAvi.cy ); return true; } ////////////////////////////////////////////////////////////////////////// CRect CAviView::OnSwRecalcLayout( bool bDoLayout, LPCRECT pRectClientSrc ) { CRect rc = CExtScrollWnd::OnSwRecalcLayout( bDoLayout, pRectClientSrc ); if(!bDoLayout) return rc; if(!GetMainFrame()->m_pAviPlayer) return rc; LONG lPosHorz = ScrollPos32Get( SB_HORZ ); LONG lPosVert = ScrollPos32Get( SB_VERT ); CSize szAvi = GetMainFrame()->m_pAviPlayer->GetAviRenderSize(); GetMainFrame()->m_pAviPlayer->SetPlayerWindowPos( -lPosHorz, -lPosVert, szAvi.cx, szAvi.cy ); return rc; }